package cn.com.zetatech.loader.api;

import java.io.File;
import java.util.Map;

/**
 * 文件解析接口
 * @author zhengbs
 */
public interface FileResolver<T, R> {

    /**
     * 文件解析公共方法
     * @param filePath 文件本地路径
     * @return
     */
    R resolve(String filePath, Map<String, Object> extraInfo);

    /**
     * 附加信息：文件服务器信息、计算参数等
     * @return
     */
    T getParams(Map<String, Object> extraInfo);

    /**
     * 检查文件类型，格式等
     * @param file
     * @param params
     * @return
     */
    void checkFile(File file, T params);

    /**
     * 文件解析
     * @param file
     * @param params
     * @return
     */
    R parse(File file, T params);

    /**
     * 文件解析入库失败时的操作（回滚操作）
     * @return
     */
    boolean failure(String message);

    /**
     * 文件解析入库成功的操作
     * @return
     */
    boolean success(String message);

    /**
     * 数据入库消费者组
     * @return
     */
    String getDataStoreConsumerGroupId();

}
